﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Com.Binaria.SISCOB.Funcional.DTO;
using System.Web.Security;
using System.Security.Principal;
//using Com.Binaria.GIDEX.Web.Controller;
//using Com.Binaria.GIDEX.Funcional.Enumeracion;

namespace Com.Binaria.SISCOB.Web
{
    public partial class Inicio : System.Web.UI.Page
    {
        #region propiedades privadas

        #endregion propiedades privadas

        #region propiedades publicas

        public ContextoDTO Contexto
        {
            get
            {
                return (ContextoDTO)Session["ContextoDTO"];
            }
            set
            {
                Session["ContextoDTO"] = value;
            }
        }

        public String ErrorValidacion
        {
            get
            {
                return (String)Session["Inicio_ErrorValidacion"];
            }
            set
            {
                Session["Inicio_ErrorValidacion"] = value;
            }
        }

        #endregion propiedades publicas

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                this.Response.Clear();
            }
        }

        //Una ves que el usuario esta loegueado
        protected void Login1_LoggedIn(object sender, EventArgs e)
        {
            //Cargo la informacion inicial
            //InicioController.instance().Ejecutar(OpcionesEjecutarController.Inicio_LogueoUsuario.ToString(), this);
        }

        /// <summary>
        /// Mientras el usuario se esta logueando verifico que tenga empresa y rol asociado
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Login1_LoggingIn(object sender, LoginCancelEventArgs e)
        {

            ////verifico que no exista un error
            //if (!this.ErrorUsuario.Equals(""))
            //{
            //    //e.Cancel = true;
            //}
        }

        protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
        {
            //Cargo la informacion inicial
            //InicioController.instance().Ejecutar(OpcionesEjecutarController.Inicio_ValidoUsuario.ToString(), this);
            //Verifico el estado de la autenticacion

            try
            {
                //creo una variable de error
                String ErrorValidacion = String.Empty;

                //Valido credenciales del usuario
                if (!Membership.ValidateUser(this.Login1.UserName, this.Login1.Password))
                {
                    ErrorValidacion = "Nombre de usuario o Clave mal ingresados";
                }

                //valido el rol del usuario
                if (Roles.GetRolesForUser(this.Login1.UserName).ToList().Count.Equals(0))
                {
                    if (!ErrorValidacion.Equals(""))
                    {
                        ErrorValidacion = ErrorValidacion + "<br>";
                    }
                    ErrorValidacion = ErrorValidacion + "El usuario no tiene un rol asignado";
                }

                if (ErrorValidacion.Equals(""))
                {
                    string[] rrl = Roles.GetRolesForUser(this.Login1.UserName);
                    //e.Authenticated = ErrorValidacion.Equals(String.Empty) ? true : false;
                    //this.Request.rContext.Response.Redirect();// Response.Redirect("/Paginas/Mantto");
                    FormsAuthentication.RedirectFromLoginPage(this.Login1.UserName,false);
                }
                //Paso el resukltrado de la validacion a la propiedad de la pagina
                this.ErrorValidacion = ErrorValidacion;
                //Agrego el resultado al objeto login
                this.Login1.FailureText = ErrorValidacion;
            }
            catch (Exception ex)
            {
                //Carga error producido al realizar la accion
                //ScriptManager.RegisterStartupScript(Pagina.Page, GetType(), "Error", "alert('Se ha producido un error en el sistema (Metodo : " + MPREFIX + " | Error : " + ex.Message.Replace("'", "").ToString() + ")');", true);
                //HttpContext.Current.Session["MensajeAlert"] = "Se ha producido un error en el sistema (Metodo : " + MPREFIX + " | Error : " + ex.Message.Replace("'", "").ToString() + ")";
                ScriptManager.RegisterStartupScript(this.Page, GetType(), "Error", "alert('No fue posible terminar el proceso correctamente. Por favor intente más tarde y si el problema persiste contáctese con su Administrador.');", true);
            }


        }
    }
}
